package cn.juque.lucenecandy.core.annotation;

import cn.juque.lucenecandy.core.enums.DataTypeEnum;
import cn.juque.lucenecandy.core.enums.FieldFillEnum;

import java.lang.annotation.*;

/**
 * @author juque
 * @version 1.0.0
 * <ul>
 *     <li>Field</li>
 * </ul>
 * @date 2023-12-01
 **/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE})
public @interface Field {

    /**
     * 字段名称
     *
     * @return String
     */
    String value() default "";

    /**
     * 数据类型
     *
     * @return DataTypeEnum
     */
    DataTypeEnum type() default DataTypeEnum.STRING;

    /**
     * 是否是唯一标识
     * @return boolean
     */
    boolean isId() default false;

    /**
     * 用于索引，只在字符串形式下有效
     *
     * @return boolean
     */
    boolean indexed() default false;

    /**
     * 是否存储
     *
     * @return boolean
     */
    boolean stored() default true;

    /**
     * 是否可用于分组
     *
     * @return boolean
     */
    boolean groupBy() default false;

    /**
     * 填充方式
     *
     * @return FieldFillEnum
     */
    FieldFillEnum[] fills() default {};
}
